public class test03 {
        public List<List<Integer>> fourSum(int[] nums, int target) {
            List<List<Integer>> res = new ArrayList<>();
            int sum = 0;
            Arrays.sort(nums);
            for(int i = 0;i<nums.length;i++){
                //注意限定条件
                //如果第一个数为负数，比目标值大，目标也是负数，那么还是有可能可以达到的
                if(nums[i]>0 && nums[i]>target){
                    return res;
                }
                if(i>0 && nums[i]==nums[i-1]){
                    continue;
                }
                for(int j = i+1;j<nums.length;j++){
                    //注意给nums[j]去重时，对j的前提限制
                    if(j>i+1 && nums[j]==nums[j-1]){
                        continue;
                    }
                    int left = j+1,right = nums.length-1;
                    while(left<right){
                        sum = nums[i]+nums[j]+nums[left]+nums[right];
                        if(sum>target){
                            right--;
                        }else if(sum<target){
                            left++;
                        }else{
                            res.add(Arrays.asList(nums[i],nums[j],nums[left],nums[right]));
                            while(left<right && nums[left]==nums[left+1])left++;
                            while(left<right && nums[right]==nums[right-1])right--;
                            left++;
                            right--;
                        }
                    }
                }
            }
            return res;
        }
}
